#include <stdio.h>

int main(void)
{
	// 变量的定义
	signed int a, b; // 默认有符号
	int c;

	// 赋值
	a = 5;
	b = 9;

	// a 0000 0000 0000 0000 0000 0000 0000 0101
	// b                                    1001
	// & 只有同时为1结果才是1
	c = a & b;
	printf("c:%d\n", c);
	
	// | 对应位只要有1个为1结果就是1
	c = a | b;
	printf("c:%d\n", c);

	// ^ 对应位不同为1,相同为0
	c = a ^ b;
	printf("c:%d\n", c);

	// ~ 按位取反	
	c = ~a;
	printf("c:%d\n", c);

	// >> 右移 低位移除，高为补符号为, 正数补0,负数补1 每移位一次，数值缩小二倍
	c = a >> 2; // 101
	printf("c:%d\n", c);

	// << 左移 高位移除，低位补0	每移位一次，扩大二倍
	c = a << 2; // 10100
	printf("c:%d\n", c);

	return 0;
}

